/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo;

import java.io.Serializable;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;


public class Categoria implements Serializable {
    private String codigoCategoria;
    private String nombreCategoria;
    private String estadoCategoria;
    private boolean retorno;

    public Categoria() {
    }

    public boolean isRetorno() {
        return retorno;
    }

    public void setRetorno(boolean retorno) {
        this.retorno = retorno;
    }

    public String getCodigoCategoria() {
        return codigoCategoria;
    }

    public void setCodigoCategoria(String codigoCategoria) {
        this.codigoCategoria = codigoCategoria;
    }

    public String getNombreCategoria() {
        return nombreCategoria;
    }

    public void setNombreCategoria(String nombreCategoria) {
        this.nombreCategoria = nombreCategoria;
    }

    public String getEstadoCategoria() {
        return estadoCategoria;
    }

    public void setEstadoCategoria(String estadoCategoria) {
        this.estadoCategoria = estadoCategoria;
    }

        //registrar
     public static boolean registrarCategoria (Categoria a)
    {
        boolean estado = false ;
        Connection conexion=null;
         try{
             conexion=ControladorBD.darConexionBD();
             CallableStatement st=conexion.prepareCall(" {call sp_registrarCategoria "
                     +"(?,?)} ");
             st.setString(1,a.getNombreCategoria());
             st.registerOutParameter(2,java.sql.Types.BOOLEAN);
             st.execute();
             a.setRetorno(st.getBoolean(2));
             if(a.isRetorno()==true)
             {
                 estado=true;
             }
        st.close();
        conexion.close();
             
         } catch(Exception error){
             System.out.println("Error en el metodo por: "+ error.getMessage());
                                 error.printStackTrace();
         }
         
        return estado;  
        
    } 
     
     //actualizar
     public static boolean actualizarCategoria (Categoria a)
    {
        boolean estado = false ;
        Connection conexion=null;
         try{
             conexion=ControladorBD.darConexionBD();
             CallableStatement st=conexion.prepareCall(" {call sp_actualizarCategoria "
                     +"(?,?,?,?)} ");
             st.setString(1,a.getCodigoCategoria());
             st.setString(2,a.getNombreCategoria());
             st.setString(3,a.getEstadoCategoria());
             st.registerOutParameter(4,java.sql.Types.BOOLEAN);
             st.execute();
             a.setRetorno(st.getBoolean(4));
             if(a.isRetorno()==true)
             {
                 estado=true;
             }
        st.close();
        conexion.close();
             
         } catch(Exception error){
             System.out.println("Error en el metodo por: "+ error.getMessage());
                                 error.printStackTrace();
         }
         
        return estado;  
        
    } 
     //listar categorias
     
     public static ArrayList<Categoria> getListarCategoria(){ 
     ArrayList<Categoria> arreglo =         new  ArrayList<Categoria>();
    if (arreglo.size()==0){         
        Categoria obj=null;
    Connection conexion = null;
    ResultSet rs = null;
    try{
    conexion = ControladorBD.darConexionBD();
    CallableStatement st = conexion.prepareCall
  ( "{call sp_listarCategoria()}");    
    rs = st.executeQuery();        
    if (rs.next()){          
        do{
        obj =new Categoria();
        obj.setCodigoCategoria(rs.getString("codigoCategoria"));
        obj.setNombreCategoria(rs.getString("nombreCategoria"));
        obj.setEstadoCategoria(rs.getString("estadoCategoria"));
        arreglo.add(obj);
       } while (rs.next());
    }  
         rs.close();
         st.close();
         conexion.close();

     }catch(Exception error){
        System.out.println("Error en el metodo por: " +
                   error.getMessage());
                error.printStackTrace();
        }    
      }  
    return arreglo;
    }
     /*/cambo de Categoria 
     public static List<Categoria> getCargarComboCategoria(){  
         List<Categoria> arrayCategoria =new ArrayList<Categoria>();
    if (arrayCategoria.size()==0){         
        Categoria obj=null;
    Connection conexion = null;
    ResultSet rs = null;
    try{
    conexion = ControladorBD.darConexionBD();
    CallableStatement st = conexion.prepareCall
  ( "{call sp_listarCategoria()}");    
    rs = st.executeQuery();        
    if (rs.next()){          
        do{
        obj =new Categoria();
        obj.setCodigoCategoria(rs.getString("codigoCategoria"));
        obj.setNombreCategoria(rs.getString("nombreCategoria"));
        arrayCategoria.add(obj);
       } while (rs.next());
    }   
         rs.close();
         st.close();
         conexion.close();

     }catch(Exception error){
        System.out.println("Error en el metodo por: " +
                   error.getMessage());
                error.printStackTrace();
        }    
      }  
    return arrayCategoria;
    }
     */
     /*
     * combo que carga las categorias
     */
    public ArrayList<SelectItem>getCargarComboCategoria(){         
    ArrayList<SelectItem> arrayNivel = new ArrayList<SelectItem>();
    Connection conexion = null;
    ResultSet rs = null;
    try{
    conexion = ControladorBD.darConexionBD();
    CallableStatement st = conexion.prepareCall( "{call sp_listarCategoria()}");    
    rs = st.executeQuery();        
    if (rs.next()){    
      do{
        arrayNivel.add(new SelectItem(rs.getString("codigoCategoria"), 
                rs.getString("nombreCategoria")));              
      } while (rs.next());
    }  
         rs.close();
         st.close();
         conexion.close();

     }catch(Exception error){
        System.out.println("Error en el metodo por: " +
                   error.getMessage());
                error.printStackTrace();
        }    
      
    return arrayNivel;
    } 
     
     
}
